package com.ce.pms.base.service.impl;

import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.common.dao.ISysrefcodeDao;
import com.ce.pms.common.model.SysInfo;
import com.ce.pms.exception.BusinessException;
import com.ce.util.BlankUtil;
import com.sitechasia.webx.core.service.impl.BaseService;
/**
 * @Function:
 * @Author <a href="mailto:szyixianjian@myce.net.cn">yixianjian</a>
 * @Create on: 2008-1-4<br>
 * <p>中企动力华南研发中心深圳分部。未经本公司许可，不得以任何方式复制或使用本程序任何部分 <p>
 * <p> 未经本公司许可，不得以任何方式复制或使用本程序任何部分 <p>
 */
public class PmsBaseServiceImpl extends BaseService  implements IPmsBaseService
{
    protected ISysrefcodeDao sysrefcodeDao;

    /**
     * 用户信息服务
     */


	public SysInfo createInfo(Long creator) {
		this.checkCreatorInfo(creator);
		SysInfo retValue = new SysInfo();
		retValue.setCreator(creator);
		retValue.setSysDate(this.getDate());
		return retValue;
	}

	public Date getDate() {
		return this.sysrefcodeDao.getDate();
	}

	public ISysrefcodeDao getSysrefcodeDao() {
		return this.sysrefcodeDao;
	}

	public void modifyInfo(SysInfo info,Long modifier) {
		info.setModifier(modifier);
		info.setModifyDate(this.getDate());
	}

    public void setSysrefcodeDao(ISysrefcodeDao sysrefcodeDao) {
		this.sysrefcodeDao = sysrefcodeDao;
	}

	/**
	 * 功能描述: 判断创建人信息是否为空
	 *
	 * @author 付湘辉
	 * Created on:2008-7-10
	 *
	 * 修改原因：
	 * @param creator
	 * @return void 返回结果
	 */
	protected void checkCreatorInfo(Long creator) {
		if (BlankUtil.isBlank(creator)) {
			throw new BusinessException("common:creator_null_exception",BusinessException.ERROR);
		}
	}

	/**
	 *
	 * 功能描述: 判断传入的参数是否为空，如果是则抛出参数为空异常,参数 key 由调用者 传入
	 *
	 * @author 付湘辉
	 * Created on:2008-7-10
	 *
	 * @author
	 * Update on：
	 * 修改原因：
	 * @exception com.ce.pms.exception.BusinessException
	 * @param parameter
	 * @param key
	 */
	protected void checkParameterIsNull(Object parameter,String key){
		this.checkParameterIsNull(key, parameter);
	}

	/**
	 *
	 * 功能描述: 判断传入的参数是否有一个为空，如果是则抛出参数为空异常,参数 key 由调用者 传入
	 *
	 * @author 付湘辉
	 * Created on:2008-7-10
	 *
	 * @author
	 * Update on：
	 * 修改原因：
	 * @exception com.ce.pms.exception.BusinessException
	 * @param parameters
	 * @param key
	 */
	protected void checkParameterIsNull(String key,Object ... parameters){
		try {
			for (Object object : parameters) {
				if (BlankUtil.isBlank(object)) {
					throw new BusinessException(key,BusinessException.WARNING);
				}
			}
		} catch (NullPointerException ne) {
			throw new BusinessException(key,BusinessException.WARNING);
		} catch (BusinessException be) {
			throw be;
		} catch (Exception e) {
			super.logger.fatal(e.getMessage(), e);
			throw new BusinessException("common:unknown_exception",BusinessException.FAILURE);
		}
	}


	/**
	 * 功能描述:生成流水号单号,如果管理区ID为null，将不加入;<br>
	 * 示例：JFT-1-00001;<br>
	 * @param prefix 前缀
	 * @param chargePrecinctId 管理区id
	 * @param seq	序号
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-28<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	protected  String buildFlowNumber(String prefix,Long chargePrecinctId,int seq){
		StringBuffer result=new StringBuffer();
		result.append(prefix).append("-");
		if(chargePrecinctId!=null) result.append(chargePrecinctId).append("-");

		DateFormat df=new SimpleDateFormat("yyyyMMdd");
		result.append(df.format(new Date()));
		result.append("-");

		NumberFormat numberFormat=NumberFormat.getInstance();
		numberFormat.setMaximumIntegerDigits(5);
		numberFormat.setMinimumIntegerDigits(5);
		numberFormat.setGroupingUsed(false);

		result.append(numberFormat.format(seq));
		return result.toString();
	}

}
